#pragma once
#include <game/Config.h>
#include <game/ServiceProvider.h>


namespace liba {
namespace lib3d {
namespace node {
class Node;
} // namespace node
} // namespace lib3d
class Atom;
} // namespace liba

ARELLO_GAME_NAMESPACE_DECL_START
namespace controls {
class ControlCollection;
} // namespace controls

class Properties;

/** This class provides means for GameScreenBackend instances to communicate with the engine. */
class ScreenBackendSite
{
public:
	virtual controls::ControlCollection& GetControlCollection() = 0;
	virtual liba::lib3d::node::Node* GetRootNode() = 0;

	virtual const Properties* GetProperty() const = 0;

	virtual ServiceProvider& GameServices() = 0;
	virtual void EnableInput(bool enable) = 0;
};

ARELLO_GAME_NAMESPACE_DECL_END